package cn.com.bod.fas.common.service;

import cn.com.bod.fas.common.constant.Constants;
import cn.com.bod.fas.common.service.impl.FeignSequenceServiceImpl;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;

/**
 * @description 主鍵序列获取Feign服务
 * @author zhangchi
 * @date 2019年9月27日 17:04:11
 * @version 1.0.0
 * @Copyright (c) scfhdt
 */
@FeignClient(fallback = FeignSequenceServiceImpl.class, name = Constants.YUSP_SEQUENCE_SERVICE_NAME)
public interface FeignSequenceService {
    
    /**
     * @description 获取一个模本序列
     * @author zhangchi
     * @date 2019年9月29日 10:36:13
     * @param seqId 模板code
     * @return java.lang.String 
     */
    @RequestMapping(
            method = RequestMethod.POST,
            value = "/api/sequenceconfig/getSequenceTemplate/{seqId}")
    String getTempSequenceByCode(@PathVariable("seqId") String seqId);
    
    /**
     * @description 获取对个模板序列
     * @author zhangchi
     * @date 2019年9月29日 10:36:39
     * @param seqId 模板code
     * @param count 获取数量
     * @return java.util.List<java.lang.String> 
     */
    @RequestMapping(
            value = "/api/sequenceconfig/getSequenceWithTemplateWithCount/{seqId}/{count}",
            method = RequestMethod.POST)
    List<String> getTempSequenceByCodeAndCount(@PathVariable("seqId") String seqId, @PathVariable("count") Integer count);

    /**
     * @description 获取序列的下个值
     * @author zhangchi
     * @date 2019年9月29日 11:10:35
     * @param seqId 序列code
     * @return java.lang.Long
     */
    @RequestMapping(
            method = RequestMethod.GET,
            value = "/api/sequenceconfig/getNextSeq/{seqId}")
    String getNextSequence(@PathVariable("seqId") String seqId);

    /**
     * @description 获取序列的多个值
     * @author zhangchi
     * @date 2019年9月29日 11:11:17
     * @param seqId 序列code
     * @param count 获取数量
     * @return java.util.List<java.lang.Long>
     */
    @RequestMapping(
            value = "/api/sequenceconfig/getNextSequenceWithCount/{seqId}/{count}",
            method = RequestMethod.GET)
    List<String> getNextSequenceByCount(@PathVariable("seqId") String seqId, @PathVariable("count") Integer count);
}
